///
/// @ProjectName:    learning_rust
/// @Description:    
/// @File:           build.rs
/// @Author:         wujehy
/// @Email:          wujehy@qq.com
/// @Time:           2021-07-04 16:55
///

use std::{env, error::Error, path::PathBuf};

use cc::Build;

fn main() -> Result<(), Box<dyn Error>> {
    let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
    // NOTE build.rs 的 打印其实是类似与设置环境变量
    // 查找 链接库的路径
    println!("cargo:rustc-link-search={}", out_dir.display());
    // 需要链接的静态库
    println!("cargo:rustc-link-lib=static=system-call");
    // 将 汇编程序编译成 指定的静态库
    Build::new().file("sys_func.s").compile("system-call");
    // 用于检测文件是否修改 如果 变更后则需要重新编译 , 即惰性编译
    println!("cargo:rerun-if-changed=sys_func.s");
    Ok(())
}